//
//  SleepStagingUtils.h
//  CareRingApp
//
//  Created by Linktop on 2022/7/8.
//

#import <Foundation/Foundation.h>
//#import "StagingData.h"
//#import "SleepStagingResult.h"
NS_ASSUME_NONNULL_BEGIN

extern NSString * const SLEEP_KEY_TIME;
extern NSString * const SLEEP_KEY_HR;
extern NSString * const SLEEP_KEY_IDX ;

extern const int SPLIT_TIME_MINUTES ;//= 1 * 60; // 60 分钟
/**
 * 连续几小时低心率 才算有睡眠
 */
extern const int MIN_HOURS_OF_SLEEP ;//= 3;

/**
 * 根据静息心率判断睡眠心率的阈值 静息心率+多少以内是睡眠心率
 */
extern const int RESTING_SLEEP_HEART_RATE_THRESHOLD ;//= 3;

/**
 * 觉醒和睡眠心率差值
 */
extern const int WAKE_SLEEP_HR_DEVIATION ;//= 10;

/**
 * 查找N3睡眠数据 每多少分钟数据进行计算标准差
 */
extern const int N3_FIND_INTERVAL_TIME ;//= 10;

/**
 * 标准差阈值多少以下认为是平缓心率 N3期
 */
extern const double N3_STANDARD_DEVIATION_THRESHOLD ;//= 0.5;

/**
 * 是否需要矫正平缓心率数据 低-高-低 将这种数据认为是平缓心率 e.g 0.47-0.8-0.4
 */
extern const BOOL N3_NEED_CORRECTION_THRESHOLD ;//= false;

/**
 * 标准差阈值平缓心率矫正范围从@N3_STANDARD_DEVIATION_THRESHOLD到
 *
 */
extern const int N3_STANDARD_DEVIATION_CORRECTION_THRESHOLD ;//= 1;

/**
 * 小于等于多少个标准差平缓心率 是N3期
 * 连续几个小于等于N3_STANDARD_DEVIATION_THRESHOLD的数列才是N3期
 */
extern const int N3_STANDARD_DEVIATION_AMOUNT ;//= 2;

/**
 * 深度睡眠最小间隔时间 单位分钟
 */
extern const int N3_DEEP_SLEEP_MINIMUM_INTERVAL ;//= 20;

/**
 * 计算标准差数列采用连续还是间隔
 * false 连续0-3，4-7，8-11
 * true 间隔0-3，1-4，2-5
 */
extern const BOOL STANDARD_DEVIATION_CALCULATE_USE_INTERVAL ;//= true;

/**
 * 睡眠分期 最小数量的数据才能进行计算标准差
 */
extern const int MIN_STANDARD_DEVIATION_AMOUNT ;//= 3;
/**
 * 心率数据两两之间时间间隔最大允许多少分钟
 */
extern const int MAX_HEART_RATE_INTERVAL ;//= 20;

/**
 * 睡眠分期 每多少分钟数据进行计算标准差
 */
extern const int STAGING_STANDARD_DEVIATION_INTERVAL_TIME ;//= 5;

/**
 * N2 最大标准差阈值
 *
 */
extern const double N2_STANDARD_DEVIATION_THRESHOLD ;//= 1.5;

/**
 * N1 最大标准差阈值
 *
 */
extern const double N1_STANDARD_DEVIATION_THRESHOLD ;//= 2.5;

/**
  * REM 最大标准差阈值
  *
  */
extern const double REM_STANDARD_DEVIATION_THRESHOLD ;//= 3.5;
/**
  * 分期连续性
  */
extern const BOOL STAGING_CONTINUITY ;//= true;


@interface SleepStagingUtils : NSObject<NSXMLParserDelegate>

//@property(strong, nonatomic)NSDateFormatter *dateFormatter;
//@property(strong, nonatomic)NSMutableArray<NSMutableDictionary *> *testDataArray;
//@property(assign, nonatomic)NSUInteger count;

//@property(copy, nonatomic) void(^testCbk)(SleepStagingResult * sleepResult);

//-(void)readXml:(NSString *)filePath;



//-(SleepStagingResult *)findSleepData:(NSMutableArray <NSDictionary<NSString *, NSNumber *> *> *)hrdata;


@end

NS_ASSUME_NONNULL_END
